# 实现一个通讯录管理系统，要求有添加、修改、删除、查询功能。
# 并且能够退出通讯录管理系统。
# 具体要求：
# 【1】根据相应的字母提示完成相应的操作
# 【2】添加的时候，提醒用户输入姓名，然后输入手机号码；修改的时候只能修改电话号码；
# 删除的时候通过姓名删除；查询的时候可以通过电话查人，也可以通过人查电话
# 【3】执行界面参考右边截图
# 【4】数据存储结构：


class Address_book:
    def __init__(self):
        self.info = {}
        self.read_file()

    def read_file(self):
        f = open("通讯录.txt", "r+", encoding="UTF-8")
        name_phone = f.readlines()
        for i in range(len(name_phone)):
            name_phone[i] = name_phone[i][:-1]
        for each in name_phone:
            name = each.split("，")[0]
            phone = each.split("，")[1]
            self.info[name] = phone

    def add_info(self):
        name = input("输入姓名:")
        phone = input("输入电话号码:")
        self.info[name] = phone
        self.main()

    def mod_info(self):
        name = input("输入姓名:")
        if name in self.info:
            phone = input("输入要修改的电话号码:")
            self.info[name] = phone
        else:
            print("没有此人信息")
        self.main()

    def del_info(self):
        name = input("输入要删除的名字:")

        try:
            del self.info[name]
        except:
            print("没有此人信息")
        self.main()

    def query_info(self):
        name = input("要查找的姓名或电话：")
        find_list = []
        for key, value in self.info.items():
            if key.find(name) >= 0 or value.find(name) >= 0:
                find_list.append(key)
                print("{} 电话号码是 {}".format(key, self.info[key]))
        if len(find_list) == 0:
            print("未查到此人或电话信息")

        self.main()

    def quit_info(self):
        # 保存到现有通讯录
        f = open("通讯录.txt", "w", encoding="UTF-8")
        for key, value in self.info.items():
            f.writelines(key + '，' + value + '\n')
        f.close()
        quit()

    def main(self):
        print("============================")
        print("添加：A  修改：M  删除：D  查找：Q  退出：E")
        command = input("-->")
        if command.upper() == 'A':
            self.add_info()
        elif command.upper() == 'M':
            self.mod_info()
        elif command.upper() == 'D':
            self.del_info()
        elif command.upper() == 'Q':
            self.query_info()
        elif command.upper() == 'E':
            self.quit_info()

    def setup(self):
        print("=====欢迎使用通讯录管理系统=====")
        # 打印现有通讯录
        print("\t姓名\t电话".format(chr(12288)))
        for key, value in self.info.items():
            print('\t{key}\t{value}'.format(chr(12288), key=key, value=value))
        self.main()


if __name__ == "__main__":
    this_project = Address_book()
    this_project.setup()